<?php
class Application_Model_ManagementUnitMapper {
	
	protected $_connection;
	
	public function __construct() {
		$this->_connection = new Application_Model_DbTable_ManagementUnit();
	}
	
	/**
	 * Returns all available ManagementUnit in an array
	 * 
	 * @return array:Application_Model_ManagementUnit
	 */
	public function getAll($type = null) {
		//fetch data from database
		try {
			$result = $this->_connection->fetchAll()->toArray();
		} catch (Exception $e) {
			echo $e->getMessage();
		}

		if($type == 'form') {
			$entries = array();
			
			foreach($result as $row) {
				$entries[$row['managementUnit']] = $row['managementUnitDesc'];
			}
			return $entries;
			die;
		}
		return $result;
		
				
		
	}
	
	/**
	 * Insert ManagementUnit to database
	 * 
	 * @param Application_Model_ManagementUnit $managementUnit
	 */
	public function add(Application_Model_ManagementUnit $managementUnit) {
		
		//fill array with Management unit info
		$dbdata = array(
				'managementUnit' => $managementUnit->getManagementUnit(),
				'managementUnitDesc' => $managementUnit->getManagementUnitDesc());
		
		//insert data into database
		try {
			$this->_connection->insert($dbdata);
		} catch (Exception $e) {
			echo $e->getMessage();
		}
		
	}
	
	/**
	 * Get Managementunit info based on Primary key
	 * 
	 * @param string $managementUnit
	 * @return array ManagementUnit
	 */
	public function getById($managementUnit) {
	
		try {
			$resultRow = $this->_connection->fetchRow('managementUnit=\''.$managementUnit.'\'')->toArray();
		} catch (Exception $e) {
			echo $e->getMessage();
		}
		
		return $resultRow;
	}
	
	
	/**
	 * Changes ManagemenUnit
	 * 
	 * @param Application_Model_ManagementUnit $managementUnit
	 */
	public function edit(Application_Model_ManagementUnit $managementUnit) {
		
		$dbdata = array(
				'managementUnit'		=> $managementUnit->getManagementUnit(),
				'managementUnitDesc'	=> $managementUnit->getManagementUnitDesc());
		
		$this->_connection->update($dbdata, 'managementUnit=\''.$managementUnit->getManagementUnit().'\'');
	}
	
	public function delete($managementUnit) {
	
		try {
			$this->_connection->delete('managementUnit=\''.$managementUnit.'\'');
		} catch (Exception $e) {
			echo $e->getMessage();
		}

	}
}